package com.ruoyi.school.domain.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.school.domain.PacAcademicOutput;
import com.ruoyi.school.domain.PacTeacher;
import lombok.Data;

import java.lang.reflect.Field;
import java.util.Date;
import java.util.List;

/*
 * @Author Lin
 * @Description 学术成果返回类
 * @Date 2025/5/25
 */
@Data
public class PacAcademicOutputVo extends PacAcademicOutput {
    /**
     * 院系
     */
    private String stuFaculties;

    /**
     * 班级
     */
    private String stuClass;

    /**
     * 入学年份
     */
    private String yearEnrollment;

    /**
     * 联系电话
     * @param parent
     */
    private String stuPhone;

    /**
     * 审批id
     */
    private Integer acAuditId;

    /**
     * 学生ids
     * @param parent
     */
    private List<Integer> stuIds;

    /**
     * 指导老师
     * @param parent
     */
    private List<PacTeacher> teachers;

    /**
     * 学业老师
     * @param parent
     */
    private String academicTeacher;

    /**
     * 赛事认定等级
     * @param parent
     */
    private String recognitionLevel;

    /**
     * 赛事名称
     * @param parent
     */
    private String recognitionName;

    /**
     * 实战单位
     * @param parent
     */
    private String practiceUnit;

    /**
     * 专利号
     * @param parent
     */
    private String patentNum;

    /**
     * 参与人员
     * @param parent
     */
    private List<AcademicOutputParticipationListVo> participants;

    /**
     * 类型
     * @param parent
     */
    private Long resultTypeId;

    /**
     * 教师类型筛选 0：学业导师 1:指导老师
     * @param parent
     */
    @TableField(exist = false)
    private Integer teacherType;

    /**
     * 团队成员
     * @param parent
     */
    @TableField(exist = false)
    private Long memberId;

    /**
     * 期刊名称
     * @param parent
     */
    @TableField(exist = false)
    private String resultTypeName;

    /**
     * 结题时间
     * @param parent
     */
    @TableField(exist = false)
    private Date acTime;

    /**
     *
     * @param parent
     */
    @TableField(exist = false)
    private String inputValue1;

    @TableField(exist = false)
    private String acDanwei;

    // 复制方法
    public void copyFromParentUsingReflection(PacAcademicOutput parent) {
        Class<? extends PacAcademicOutput> parentClass = parent.getClass();
        Field[] fields = parentClass.getDeclaredFields();

        for (Field field : fields) {
            field.setAccessible(true); // 允许访问私有字段
            try {
                // 把父类字段的值赋给子类实例
                field.set(this, field.get(parent));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }
}
